package org.kjs.common.clone.util;

import org.kjs.common.clone.Clone;
import org.kjs.common.clone.exception.CloneNotSupportedException;

import java.util.Collection;
import java.util.Map;

/**
 * Created by IntelliJ IDEA.
 * User: KJS
 * Date: 11-8-15
 * Time: 下午6:58
 * To change this template use File | Settings | File Templates.
 */
public interface CloneEngine {

    <V> boolean isJavaBasicDataType (V object);

    <V> boolean isJavaBasicDataWrapperType (V object);

    <V> V cloneJavaBasicDataWrapper (V originalJavaBasicDataWrapper);

    <V> V cloneArray (V arrayObject, Clone cloner) throws CloneNotSupportedException;

    <V> V cloneCollection (V originalCollection, Clone cloner) throws CloneNotSupportedException;

    <V> V cloneMap (V originalMap, Clone cloner) throws CloneNotSupportedException;

}
